package pe.gob.osinergmin.activity.dialog;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.melnykov.fab.FloatingActionButton;

import java.io.File;
import java.util.List;

import pe.gob.osinergmin.R;
import pe.gob.osinergmin.activity.generic.GenericDialog;
import pe.gob.osinergmin.bean.SupervisionMovilDetalleSeguridad;
import pe.gob.osinergmin.utils.PuntoControlConstants;

public class ImageDialog extends GenericDialog implements View.OnClickListener{

    private File imgFile;

    private EditText txtComentario;

    private List<SupervisionMovilDetalleSeguridad> supervisionMovilDetalleSeguridadList;

    public ImageDialog(Context context) {
        super(context);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_image);
        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        getWindow().setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);

        FloatingActionButton btnYes = (FloatingActionButton) findViewById(R.id.btnYes);
        FloatingActionButton btnNo = (FloatingActionButton) findViewById(R.id.btnNo);

        btnYes.setOnClickListener(this);
        btnNo.setOnClickListener(this);

        txtComentario = (EditText) findViewById(R.id.txtComentario);

        Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

        ImageView img = (ImageView) findViewById(R.id.seguridad_img);
        img.setImageBitmap(bitmap);

        TextView txtTitle = (TextView) findViewById(R.id.seguridad_img_title);
        txtTitle.setText(imgFile.getName());

        int id = getIdFromFileName(imgFile.getName());
        if (id != -1) {
            SupervisionMovilDetalleSeguridad supervisionMovilDetalleSeguridad = getDetalleById(id);
            txtComentario.setText(supervisionMovilDetalleSeguridad.getObservacion());
        }
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.btnYes:
                if(imgFile.exists()){
                    String comentario = txtComentario.getText().toString();
                    if(comentario != null && !PuntoControlConstants.EMPTY.equals(comentario)) {
                        int id = getIdFromFileName(imgFile.getName());
                        if (id != -1) {
                            SupervisionMovilDetalleSeguridad supervisionMovilDetalleSeguridad = getDetalleById(id);
                            supervisionMovilDetalleSeguridad.setObservacion(comentario);
                            makeText(getContext(), R.string.seguridad_result_capture_ok, Toast.LENGTH_SHORT);
                        } else {
                            makeText(getContext(), R.string.seguridad_validate_observacion_error, Toast.LENGTH_SHORT);
                        }
                    }else{
                        makeText(getContext(), R.string.seguridad_validate_observacion, Toast.LENGTH_SHORT);
                        break;
                    }
                }else{
                    makeText(getContext(), R.string.seguridad_result_capture_error, Toast.LENGTH_SHORT);
                }
                dismiss();
                break;
            case R.id.btnNo:
                imgFile.delete();
                makeText(getContext(), R.string.seguridad_no_save_photo, Toast.LENGTH_SHORT);
                dismiss();
                break;
            default:
                break;
        }
    }

    private int getIdFromFileName(String name) {
        if(name != null && !PuntoControlConstants.EMPTY.equals(name)){
            String[] name_parts = name.split("_");
            try{
                if(name_parts.length > 2){
                    return Integer.parseInt(name_parts[2]);
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        return -1;
    }

    public void setImgFile(File imgFile){
        this.imgFile = imgFile;
    }

    public void setSupervisionMovilDetalleSeguridadList(List<SupervisionMovilDetalleSeguridad> supervisionMovilDetalleSeguridadList){
        this.supervisionMovilDetalleSeguridadList = supervisionMovilDetalleSeguridadList;
    }

    private SupervisionMovilDetalleSeguridad getDetalleById(int id){
        for(SupervisionMovilDetalleSeguridad detalle:  supervisionMovilDetalleSeguridadList){
            if(id == detalle.getGuiaFiscalizacionDetalle()){
                return detalle;
            }
        }
        return null;
    }
}
